//每次刚进入网站 肯定会调用main.js 把本地存储的car 读出来 放到store中
const  car =JSON.parse(localStorage.getItem('car') || '[]')
const  orderAffirm =JSON.parse(localStorage.getItem('orderAffirm'))
const  count =parseInt(localStorage.getItem('count') || 0)
console.log(count)
// var  car =JSON.parse( localStorage.removeItem('car'))
let state = {//存放数据   this.$store.state.**
    car: car,
    count: count || 0,
    //点击加入购物车 将购物车中商品的数据用一个数组 存起来 一个一个的对象{id:  ,count:   ,price:   ,selected:   }
    orderAffirm: orderAffirm, //订单确认列表
    productError: 0,
    }

const getters = { //对共享数据的处理 过滤
        //实现数据的获取方法  this.$store.getter.**   
        getAllCount(state){
            // let result = JSON.parse(localStorage.getItem('count'));=======
            let result = parseInt(localStorage.getItem('count'));
            if (result) {
              state.count = result
            }
             // state.car.forEach(item => {
             //    c += item.count
             // })
             return state.count
        },
        //获取 store中 的对应商品的数量  并拼接成一个数组
        getGoodsCount(state){
            var o = {}
            state.car.forEach(item => {
                o[item.id] = item.count
            })
            return o
        },
        getGoodsSelected(state){
            var o = {}
            state.car.forEach(item => {
                o[item.id] = item.selected
            })
            return o


        },
        getSelectedGoodsAllCount(state){
            var o = {
                count: 0,//件数
                amount: 0//总价
            }
            state.car.forEach(item => {
                if (item.selected == true) {
                    o.count += item.count
                    o.amount += item.price*item.count
                }
            })
            return o
        },
        orderAffirm(state) {
            let result = JSON.parse(localStorage.getItem('orderAffirm'))
            if (result) {
                state.orderAffirm = result;
          }else{
            state.orderAffirm = null;
          }
          return state.orderAffirm;
      },
      getShopAllGoods(state){
           let result = JSON.parse(localStorage.getItem('car') || '[]')
           if (result) {
            state.car = result
           }
           return state.car;
      },
      productError(state) {
        return state.productError;
    }

    }

const mutations = {

        // 实现数据的修改方法 this.$store.commit('方法名','按需传入的唯一参数')
        //定义一个方法 
        addToCar(state){
     
             state.count = state.count + 1 ; 
            //点击加入购物车 把商品的信息 保存到store 中的car上
            //分析 1.如果购物车中之前就有这个对应的商品 那么更新数量
            //     2. 如果没有，则直接把商品数据，push到car上
            
            //假设没有找到 
            // var flag = false
            // state.car.some(item => {
            //     if (item.id == goodsinfo.id) {
            //         item.count +=  parseInt(goodsinfo.count)
            //         flag = true
            //         return true
            //     }
            // })
            // //如果没有找到  将传过来的参数 添加到 共享数据上
            //  if (flag == false) {
            //     state.car.push(goodsinfo)
            //  }
            // //当 更新car 之后把 car数组存储到 本地 的locallStorage 中
            localStorage.setItem('count',state.count)
        },
        updateGoodsInfo(state,goodsinfo){
            state.car.some(item => {
                if (item.id == goodsinfo.id) {
                    item.count = parseInt(goodsinfo.count)
                    return true
                }
            })
            //当 修改car 之后把 car数组存储到 本地 的locallStorage 中
            localStorage.setItem('car',JSON.stringify(state.car))
        },
        deleteGoods(state,data){
            state.count  = state.count - data
            localStorage.setItem('count',JSON.stringify(state.count))
        },
        deleteGoodsList(state,productIdList){
            productIdList.some((item,i) => {
                state.car.forEach((item2,i2) => {
                    if (item2.id == item) {
                        state.car.splice(i2,1)
                        
                    }

                })
                return true

            })
              
              //当 删除  car 之后把 car数组存储到 本地 的locallStorage 中
            localStorage.setItem('car',JSON.stringify(state.car))
        },
        getSelected(state,info){
            state.car.some(item => {
                if (item.id  == info.id) {
                    item.selected = info.selected
                }
            })
              //当 最新的状态  car 之后把 car数组存储到 本地 的locallStorage 中
            localStorage.setItem('car',JSON.stringify(state.car))
        },
        //设置订单确认
        setOrderAffirm(state,data) {
            state.orderAffirm = data;
            
            //当 修改orderAffirm 之后把 orderAffirm数组存储到 本地 的locallStorage 中
            localStorage.setItem('orderAffirm',JSON.stringify(state.orderAffirm))

        },
        removeOrderAffirm(state,data) {
            //删除本地orderAffirm的存储
            localStorage.removeItem('orderAffirm')
            state.orderAffirm = {};
        },
        // 还不知道 有什么用
        setProductError(state,data) {
            if (data) {
              state.productError++;
          } else {
              state.productError = 0;
          }
      },
      setCount(state,data){
         state.count = data;
         localStorage.setItem('count',JSON.stringify(state.count));
      },
      deleteCount(state,data){
         state.count = state.count - data;
         localStorage.setItem('count',JSON.stringify(state.count));
      }

    }

export default {
    state,
    getters,
    mutations
}